
import java.sql.SQLException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javafx.collections.FXCollections;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.KeyEvent;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Pane;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;

/*
 * To change this template, choose Tools | Templates and open the template in
 * the editor.
 */
/**
 *
 * @author enrico
 */
public class AggiungiLibroView extends GridPane {

  private TextField titoloField = new TextField();
  private TextField sottotitoloField = new TextField();
  private TextField autoreField = new TextField();
  private TextField editoreField = new TextField();
  private TextField annoField = new TextField();
  private TextField scField = new TextField();
  private TextField prscField = new TextField();
  private TextField prField = new TextField();
  private TextField undField = new TextField();
  private TextField quantitaField = new TextField();
  private RadioButton sez1 = new RadioButton("I "), sez2 = new RadioButton("II "), sez3 = new RadioButton("III "), sez4 = new RadioButton("IV");
  private ToggleGroup group = new ToggleGroup();
  private Button aggiungiButton,deleteButton;
  private boolean emptyAutore=true,emptyTitolo=true,emptyQuantita=true;
  private AggiungiLibroController controller;

  public AggiungiLibroView(int section, AggiungiLibroController contro) {
    
    controller=contro;
    Text quantita = new Text("Quantità");
    Text titolo = new Text("Titolo");
    Text sottoTitolo = new Text("Sottotitolo");
    Text autore = new Text("Autore");
    Text editore = new Text("Editore");
    Text anno = new Text("Anno");
    Text sezione = new Text("Sezione");
    Text sc = new Text("SC");
    Text prsc = new Text("PRSC");
    Text pr = new Text("PR");
    Text und = new Text("Und");
    
    this.setHgap(8);
    this.setVgap(4);
    this.setId("aggiungiGrid");
    
    scField.setPrefWidth(50);
    prscField.setPrefWidth(50);
    prField.setPrefWidth(50);
    undField.setPrefWidth(50);
    quantitaField.setPrefWidth(50);
    titoloField.setPrefWidth(250);
    
    autoreField.setOnKeyReleased(new EventHandler<KeyEvent>() {

      @Override
      public void handle(KeyEvent arg0) {
        if(autoreField.getText().trim().isEmpty()) emptyAutore=true;
        else emptyAutore=false;
        
        checkPulsante();
      }
    });
    titoloField.setOnKeyReleased(new EventHandler<KeyEvent>() {

      @Override
      public void handle(KeyEvent arg0) {
        if(titoloField.getText().trim().isEmpty()) emptyTitolo=true;
        else emptyTitolo=false;
        
        checkPulsante();
      }
    });
    
    quantitaField.setOnKeyReleased(new EventHandler<KeyEvent>() {

      @Override
      public void handle(KeyEvent arg0) {
        
        
        try {
          int q = Integer.valueOf(quantitaField.getText());
          emptyQuantita=false;
          if (q<1) emptyQuantita=true;
        } catch(NumberFormatException nfe) {
          emptyQuantita=true;
        }
        
        if(quantitaField.getText().trim().isEmpty()) emptyTitolo=true;
        else emptyTitolo=false;
        checkPulsante();
      }
    });
    
    aggiungiButton = new Button("Aggiungi", new ImageView(new Image(getClass().getResourceAsStream("Stili/plus.png"))));
    aggiungiButton.setId("green");
    aggiungiButton.setDisable(true);
    aggiungiButton.setOnAction(new EventHandler<ActionEvent>() {

      @Override
      public void handle(ActionEvent arg0) {
        int sezione;
        if (sez1.isSelected()) sezione = 1;
        else if (sez2.isSelected()) sezione = 2;
        else if (sez3.isSelected()) sezione = 3;
        else sezione = 4;
        try {
          controller.aggiungiLibro(String.valueOf(sezione),titoloField.getText(),sottotitoloField.getText(),autoreField.getText(),editoreField.getText(),annoField.getText(),scField.getText(),prscField.getText(),prField.getText(),undField.getText(),quantitaField.getText());
        } catch (ClassNotFoundException ex) {
          Logger.getLogger(AggiungiLibroView.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
          Logger.getLogger(AggiungiLibroView.class.getName()).log(Level.SEVERE, null, ex);
        }
      }
    });
    
    deleteButton = new Button("Annulla", new ImageView(new Image(getClass().getResourceAsStream("Stili/delete.png"))));
    deleteButton.setId("round-red");
    
    HBox hb = new HBox();
    hb.getChildren().addAll(sez1, sez2, sez3, sez4);
    sez1.setToggleGroup(group);
    sez2.setToggleGroup(group);
    sez3.setToggleGroup(group);
    sez4.setToggleGroup(group);
    
    switch (section) {
      case 1:
        sez1.setSelected(true);
        break;
      case 2:
        sez2.setSelected(true);
        break;
      case 3:
        sez3.setSelected(true);
        break;
      case 4:
        sez4.setSelected(true);
        break;
    }

    this.add(sezione, 0, 0);
    this.add(titolo, 0, 1);
    this.add(sottoTitolo, 0, 2);
    this.add(autore, 0, 3);
    this.add(editore, 0, 4);
    this.add(anno, 0, 5);
    this.add(sc, 2, 0);
    this.add(prsc, 2, 1);
    this.add(pr, 2, 2);
    this.add(und, 2, 3);
    this.add(quantita, 2, 4);
    this.add(aggiungiButton, 2, 5, 2, 2);
    this.add(deleteButton, 4, 5, 1, 1);
    this.add(hb, 1, 0);
    this.add(titoloField, 1, 1);
    this.add(sottotitoloField, 1, 2);
    this.add(autoreField, 1, 3);
    this.add(editoreField, 1, 4);
    this.add(annoField, 1, 5);
    this.add(scField, 3, 0);
    this.add(prscField, 3, 1);
    this.add(prField, 3, 2);
    this.add(undField, 3, 3);
    this.add(quantitaField, 3, 4);
  }
  
  public Button getAddButton() {
    return aggiungiButton;
  }
  
  public Button getRemoveButton() {
    return deleteButton;
  }
  
  private void checkPulsante() {
    if (emptyAutore==false && emptyTitolo==false && emptyQuantita==false) 
      aggiungiButton.setDisable(false);
    else
      aggiungiButton.setDisable(true);
  }
}
